String.prototype.startWith=function(str){  
  if(str==null||str==""||this.length==0||str.length>this.length)  
    return false;  
  if(this.substr(0,str.length)==str)  
    return true;  
  else  
    return false;  
  return true;  
}  
String.prototype.endWith=function(str){  
  if(str==null||str==""||this.length==0||str.length>this.length)  
    return false;  
  if(this.substring(this.length-str.length)==str)  
    return true;  
  else  
    return false;  
  return true;  
}

//日期格式化
Date.prototype.format = function(format){ 
  if(!format){
    format = 'yyyy-MM-dd';// 默认1997-01-01这样的格式
  }
  var o = { 
    "M+" : this.getMonth()+1, // month
    "d+" : this.getDate(), // day
    "h+" : this.getHours(), // hour
    "m+" : this.getMinutes(), // minute
    "s+" : this.getSeconds(), // second
    "q+" : Math.floor((this.getMonth()+3)/3), // quarter
    "S" : this.getMilliseconds() // millisecond
  } 

  if(/(y+)/.test(format)) { 
    format = format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); 
  } 

  for(var k in o) { 
    if(new RegExp("("+ k +")").test(format)) { 
      format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length)); 
    } 
  } 
  return format; 
} 


var config={
  serverUrl:"//"+location.host
}

function Core(){

}
Core.prototype.numformat=function(){
  var num = (num || 0).toString(), result = '';
  var suffix="";
  if(num.indexOf(".")>-1){
    var t = num.split(".");
    num=t[0];
    suffix = "." + t[1];

  }

  while (num.length > 3) {
    result = ',' + num.slice(-3) + result;
    num = num.slice(0, num.length - 3);
  }
  if (num) { result = num +""+ result; }

  return result+suffix;
}
Core.prototype.token=function(d){
  d.createAt = new Date();
  return this.data("token",d);
}

Core.prototype.error=function(d){
  alert(d)
}
Core.prototype.alert=function(d){
  alert(d)
}
//用于存储信息
Core.prototype.data=function(k,d){
  //console.log("data",k,d)
  if(typeof d=="undefined"){
    var o = localStorage.getItem(k);
    if(o==null){
      return null;
    }else{
      o = JSON.parse(o)
      return o[k]
    }


  }else if(null==d){
    return localStorage.removeItem(k)
  }else{
    var o = {}
    o[k] = d;
    return localStorage.setItem(k,JSON.stringify(o))
  }
}
//用于存储信息
Core.prototype.api=function(uri){
  if(uri.startWith("/")){
    return config.serverUrl+uri
  }else{
    return config.serverUrl+"/"+uri
  }
}
Core.prototype.post=function(uri,data,fn){
  var url = this.api(uri)
  return new Promise(function (resolve, reject) {
    var xhr = new XMLHttpRequest();
    xhr.open("POST",url, true);
    // 添加http头，发送信息至服务器时内容编码类型
    xhr.setRequestHeader(
      "Content-Type",
      "application/x-www-form-urlencoded"
    );
    xhr.onreadystatechange = function() {
      if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {
        resolve(JSON.parse(xhr.responseText));
      }
    };
    xhr.onerror = function(){
      reject({"code":-1,"msg":"服务器繁忙"})
    }
    var _data=[];
    for(var i in data){
      _data.push( i +"=" + encodeURI(data[i]));
    }
    xhr.send(_data.join("&"));

  })
}
Core.prototype.uploadfile=function(uri,dom){
  var url = this.api(uri)
  return new Promise(function (resolve, reject) {
    var xhr = new XMLHttpRequest();
    xhr.open("POST",url, true);
    xhr.onreadystatechange = function() {
      if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {
        resolve(JSON.parse(xhr.responseText));
      }
    };
    xhr.onerror = function(){
      reject({"code":-1,"msg":"服务器繁忙"})
    }

    var formdata = new FormData();
    formdata.append("file",dom.files[0])
    xhr.send(formdata);
  })


}

Core.prototype.uploadmp3=function(uri,blob){
  var url = this.api(uri)
  return new Promise(function (resolve, reject) {
    var xhr = new XMLHttpRequest();
    xhr.open("POST",url, true);
    xhr.onreadystatechange = function() {
      if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {
        resolve(JSON.parse(xhr.responseText));
      }
    };
    xhr.onerror = function(){
      reject({"code":-1,"msg":"服务器繁忙"})
    }

    var formdata = new FormData();
    formdata.append("filetype",".mp3");
    formdata.append("file",blob)
    xhr.send(formdata);
  })

}

Core.prototype.parseUri = function(url){
  if(typeof url=="undefined"){
    url= location.href;
  }
  var query = url.substr(url.indexOf("?"));
  query=query.substr(1);
  var reg = /([^=&\s]+)[=\s]*([^=&\s]*)/g;
  var obj = {};
  while(reg.exec(query)){
    obj[RegExp.$1] = decodeURI(RegExp.$2);
  }
  return obj;
}
Core.prototype.parseQuery = function(name){

  var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
  var r = window.location.search.substr(1).match(reg);  //匹配目标参数
  if (r != null) return decodeURI(unescape(r[2])); 
  return null; //返回参数值
}

Core.prototype.isemail = function(email){
  return /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+[\.][a-zA-Z0-9_-]+$/.test(email)
}
Core.prototype.ismobile = function(mobile){
  return /^[1][34578][0-9]{9}$/.test(mobile)
}

Core.prototype.test = function(reg,data){
  var reg = new RegExp(reg); //构造一个含有目标参数的正则表达式对象
  return reg.test(data)
}
window.util = new Core();



